﻿using System;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;
using TaskManagerLib.MinimumWork;
using TaskManagerLib.Symbol;
using TaskManagerLib.Test;

var post = new PostWork("https://translator.atpgroup.work/translate",
    "tr_translator324234", new Translate()
    {
        Directly = true,
        Content = $"translate dog into Chinese"
    });
// post.Notification += notification =>
// {
//     Console.WriteLine($"Notification: Progress {notification.Progress}");
// };
// await post.Build();
// post.Start();
//
// while (post.Status != WorkStatus.Finish)
// {
//     await Task.Delay(100);
// }

// #1
// async void Action1()
// {
//     await Task.Delay(3000);
//     Console.WriteLine("hello world 3");
// }
//
// var task1 = new Task(Action1);
// var task = Task.Run(async () =>
// {
//     task1.Start();
//     await task1;
//     Console.WriteLine("hello world 0");
// });
// await task;
// Console.WriteLine("Finished");
// Console.Read();


//#2
// async Task Action3()
// {
//     await Task.Delay(3000);
//     Console.WriteLine("hello world 3");
// }
//
// var task4 = Action3();
//
// async Task<int> Action4()
// {
//     await task4;
//     Console.WriteLine("hello world 0");
//     return 1;
// }
// var task3 = Action4();
// var res2 = await task3;
// Console.WriteLine($"Finished {res2}");


//#3
// async Task<int> Action1()
// {
//     await Task.Delay(3000);
//     Console.WriteLine("hello world 3");
//     return 2;
// }
//
// var task1 = Task.Run(async () => await Action1());
// var task = Task.Run(async () =>
// {
//     // task1.Start();
//     await task1;
//     Console.WriteLine("hello world 0");
// });
// await task;
// Console.WriteLine("Finished");

// async Task hello()
// {
//     await Task.Delay(3000);
//     Console.WriteLine("hello hello");
// }
// //#4 耗时得希望阻塞执行，但是又没有await的示例
// var task = new Task<int>(() =>
// {
//     Task.Run(hello).GetAwaiter().GetResult();
//     Console.WriteLine("hello is done!");
//     return 1;
// });
// task.Start();
// Console.WriteLine(await task);

var path = @"C:\Users\betha\RiderProjects\JobManager\TaskManagerLib\source\tmp.txt";
// var download = new DownloadTask(
//     "https://tmp.atpgroup.work/download/file/1092916937/%E5%AD%A6%E5%8F%B7_%E5%A7%93%E5%90%8D_%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%97%85%E6%AF%92_%E5%AE%9E%E9%AA%8C%E6%8A%A5%E5%91%8AX.docx",
//     path);
// var download = new DownloadTask("https://tmp.atpgroup.work/download/file/911071968/rocks-8208314.jpg", path);
// download.Notification += notification =>
// {
//     Console.WriteLine($"Notification: Progress {notification.Progress:F2}");
// };
// download.Build();
// await download.StartAndBlockAsync();

// using var client = new HttpClient();
// var request = new HttpRequestMessage(HttpMethod.Get, "");
// request.Headers.Range = new RangeHeaderValue(0,10); // 设置起始字节位置
// Console.WriteLine(request.Headers);
// Console.WriteLine("t"+request.Headers.Range.ToString()+"p");
// Console.WriteLine("7989-".Split("-").Length);
// Console.WriteLine("7989-".Split("-")[1].Length);

// Task.Run(async () =>
// {
//     await Task.Delay(1000);
//     Console.WriteLine("block");
// }).GetAwaiter().GetResult();
// Task.Run(async () =>
// {
//     await Task.Delay(2000);
//     Console.WriteLine("hello world");
// });
//
// Console.Read();
// Task t = new Task(() =>
// {
//     Console.WriteLine("hello world");
// });
// t.Start();
// await t;
// await download.StartAsync();
// download.Start();

// while (download.Status is not (WorkStatus.Finish or WorkStatus.Except))
// {
//     await Task.Delay(100);
// }
